/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package socafeclient;

import entity.Comanda;

import entity.Comandaproducto;
import entity.Mesas;

import entity.Comandaproducto;

import entity.Usuarios;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author alberto
 */
public class TableModelComandas extends AbstractTableModel {

    private ArrayList datalist = new ArrayList();
    private String[] columns = {"Comanda", "Mesa", "Mesero"};
    private double totalCorte;

    @Override
    public int getRowCount() {
        return datalist.size();
    }

    @Override
    public int getColumnCount() {
        return columns.length;
    }

    @Override
    public Object getValueAt(int row, int col) {
        Comanda c = (Comanda) datalist.get(row);
        switch (col) {
            case 0: //idComanda
                return c.getIdcomanda();
            case 1: //Mesa
                return c.getIdmesa().getIdmesa();
            case 2: //Mesero
                return c.getIdusuario().getIdusuario();
            case 3: //FechaCreacion
                String strDate = new SimpleDateFormat("MM/dd/yyyy").format(c.getFechacreacion());
                return strDate;
            case 4: //coleccion
                double importe = 0.0;
                for (Iterator it = c.getComandaproductoCollection().iterator(); it.hasNext();) {
                    importe += ((Comandaproducto) it.next()).getImporte();
                }
                return importe;
            default:
                return false;
        }

    }

    public Comanda getComandaAt(int row) {
        return (Comanda) datalist.get(row);
    }

    public Comanda removeComandaAt(int row) {
        Comanda comanda = (Comanda) datalist.remove(row);
        fireTableDataChanged();
        return comanda;

    }

    public void addComanda(Comanda c) {
        datalist.add(c);
        fireTableDataChanged();
    }

    public void addComandaList(List l, boolean limpiar) {
        if (limpiar) {
            datalist.clear();
            totalCorte = 0.0;
        }
        Iterator iterador = l.listIterator();
        while (iterador.hasNext()) {
            Comanda c = (Comanda) iterador.next();
            datalist.add(c);
        }

        fireTableDataChanged();
    }

    public TableModelComandas(List l) {
        Iterator iterador = l.listIterator();
        while (iterador.hasNext()) {
            Comanda c = (Comanda) iterador.next();
            datalist.add(c);
        }

    }
    

    public TableModelComandas(int opcion) {
        //this(l);
        columns = new String[]{"Comanda", "Mesa", "Mesero", "FechaCreacion", "Importe"};
         

        
    }

    public TableModelComandas() {
        totalCorte = 0.0;
    }

    @Override
    public String getColumnName(int i) {
        return columns[i];
    }

    @Override
    public boolean isCellEditable(int row, int col) {
        switch (col) {
            case 0: //idComanda
                return false;
            case 1: //Mesa
                return false;
            case 2: //Mesero
                return false;
            case 3: //FechaCreacion
                return false;
            case 4: //Importe
                return false;
            default:
                return false;
        }
    }

    @Override
    public Class getColumnClass(int col) {
        switch (col) {
            case 0: //idComanda
                return Integer.class;
            case 1: //Mesa
                return Integer.class;
            case 2: //Mesero
                return Usuarios.class;
            case 3: //FechaCreacion
                return String.class;
            case 4: //importe
                return Double.class;
            default:
                return null;
        }
    }

    public double getTotalCorte() {
        for (int i = 0; i < datalist.size(); i++) {
            totalCorte += (Double) getValueAt(i, 4);
        }

        return totalCorte;
    }

}
